/**
  EG4Sim project, Anyang Normal University && IMP-CAS
  \class EG4NW
  \brief the model of Neotron Wall
  \author SUN Yazhou, asia.rabbit@163.com
  \since 2023-11-08
  \date 2023-11-08 last modified
  \copyright Copyright (c) 2023-2024 IMP-CAS with LGPLv3 LICEkNSE
*/

#ifndef EG4NW_h
#define EG4NW_h

#include "EG4Det.h"

class G4LogicalVolume;
class G4VPhysicalVolume;

class EG4NW : public EG4Det{
public:
  EG4NW();
  virtual ~EG4NW();

  G4LogicalVolume *SciStripLV() const{ return fSciStripLV; }
  G4LogicalVolume *FeStripLV() const{ return fFeStripLV; }
  G4LogicalVolume *Sci10LV() const{ return fSci10LV; }
  G4LogicalVolume *SciLayerLV() const{ return fSciLayerLV; }
  G4LogicalVolume *FeLayerLV() const{ return fFeLayerLV; }

  G4LogicalVolume *VetoStripLV() const{ return fVetoStripLV; }
  G4LogicalVolume *VetoLV() const{ return fVetoLV; }

protected:
  G4LogicalVolume *fSciStripLV, *fFeStripLV;
  G4LogicalVolume *fSciLayerLV, *fFeLayerLV;

  /// for constructing Fe sampling strips
  G4LogicalVolume *fFe2LV, *fFe4LV, *fSci10LV;
  G4VPhysicalVolume *fFe2[2], *fFe4[4], *fSci10[5];

  static const int kNS = 18; ///< nof strips per layer
  /// sci: sci strips; Fe: absorption sampling strips
  G4VPhysicalVolume *fSciStrip[kNS], *fFeStrip[kNS];

  static const int kNLS = 2, kNLF = 12; ///< nof layers
  G4VPhysicalVolume *fSciLayer[kNLS], *fFeLayer[kNLF];

  /// veto TOFW placed in front of nw
  static const int kNSVETO = 9; ///< nof strips
  G4LogicalVolume *fVetoLV, *fVetoStripLV;
  G4VPhysicalVolume *fVeto, *fVetoStrip[kNSVETO];
};

#endif
